package com.catmiao.spark.rdd

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * @title: RDD_01
 * @projectName spark_study
 * @description: TODO
 * @author ChengMiao
 * @date 2024/1/11 14:17
 */
object RDD_01 {

  def main(args: Array[String]): Unit = {


    // 1. 从内存中创建 RDD
    val sparkCon = new SparkConf().setMaster("local[*]").setAppName("spark")

    val sparkContext  = new SparkContext(sparkCon)

    val rdd1 = sparkContext.parallelize(
      List(1,2,3,4)
    )

    // 从底层代码实现来讲，makeRDD 方法其实就是 parallelize 方法
    val rdd2 = sparkContext.makeRDD(
      List(1,2,3,4)
    )

    rdd1.foreach(println)

    println(
      "---------------------------"
    )
    rdd2.foreach(println)



    println("==================== 分割线 ====================")

    // 2. 从外部文件创建RDD
    //    本地的文件系统、所有Hadoop支持的数据集、HDFS、HBase
    val fileRDD : RDD[String] = sparkContext.textFile("datas")

    fileRDD.foreach(println)





    // 3. 从其他RDD创建，运算完后在产生新的
    // 4. 直接new,一般由Spark自身使用

    sparkContext.stop()






  }

}
